package cn.net.sinodata.system.domain.bo;

import cn.net.sinodata.system.domain.BmTransSerial;
import cn.net.sinodata.common.mybatis.core.domain.BaseEntity;
import cn.net.sinodata.common.core.validate.AddGroup;
import cn.net.sinodata.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * 交易流水业务对象 bm_trans_serial
 *
 * @author chenbaijun
 * @date 2025-10-31
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = BmTransSerial.class, reverseConvertGenerate = false)
public class BmTransSerialBo extends BaseEntity {

    /**
     * 主键
     */
    @NotBlank(message = "主键不能为空", groups = { EditGroup.class })
    private String id;

    /**
     * 交易流水（成交编码）
     */
    @NotBlank(message = "交易流水（成交编码）不能为空", groups = { AddGroup.class, EditGroup.class })
    private String transNo;

    /**
     * 接入渠道
     */
    private String connectChannel;

    /**
     * 接入方式
     */
    private String connectType;

    /**
     * 产品编号
     */
    private String productCode;

    /**
     * 产品名称
     */
    private String productName;

    /**
     * 交易渠道
     */
    private String transChannel;

    /**
     * 成交编号
     */
    private String transSerial;

    /**
     * 任务类型（0-成交，1-确认，2-清算）
     */
    private String taskType;

    /**
     * 业务类型（市场类型）
     */
    private String bizType;

    /**
     * 业务小类
     */
    private String childBizType;

    /**
     * 成交日期
     */
    private Date transDate;

    /**
     * 状态（0-初始、1-确认中、2-已确认、3-审批中、4-清算中、5-已清算）
     */
    private String status;

    /**
     * 清算币种
     */
    private String settlementCurrency;

    /**
     * 清算方式
     */
    private String clearingMode;

    /**
     * 确认方式
     */
    private String confirmMode;

    /**
     * 起息速度
     */
    private String interestRate;

    /**
     * 确认截止时间
     */
    private Date confirmDeadlineTime;

    /**
     * 清算截止时间
     */
    private Date clearingDeadlineTime;

    /**
     * 交易确认时间（yyyy-MM-dd hh24:mi:ss）
     */
    private Date confirmTime;

    /**
     * 交易清算时间（yyyy-MM-dd hh24:mi:ss）
     */
    private Date clearingDate;

    /**
     * 确认结果
     */
    private String confirmedResult;

    /**
     * 清算结果
     */
    private String clearingResult;

    /**
     * 交易下发报文ID
     */
    private String transMessageid;

    /**
     * 交易确认报文ID
     */
    private String transConfirmMessageId;

    /**
     * 交易清算报文ID
     */
    private String transClearingMessageId;

    /**
     * 补录日期
     */
    private Date additionalEntry;

    /**
     * 非截止日轮询方式
     */
    private String nodeadlineProllingMethead;

    /**
     * 截止日轮询方式
     */
    private String deadlineProllingMethead;

    /**
     * 非截止日轮询编号
     */
    private String nodeadlineProllingNo;

    /**
     * 截止日轮询编号
     */
    private String deadlineProllingNo;

    /**
     * 本方交易员工号
     */
    private String partyTradeNo;

    /**
     * 本方交易员名称
     */
    private String partyTrade;

    /**
     * 补录人员工号
     */
    private String additionalNo;

    /**
     * 是否异常（0-否、1-是）
     */
    private String isAbnormal;

    /**
     * 异常原因
     */
    private String abnormalReason;

}
